<?php

namespace app\factory\tool\frameVerify;

/**
 * ClassName:加密工具类
 * @author leijunxiang
 * @time 2024/8/22
 * @auditor
 */
class EncryptionTool
{
    const TOOL_ENCRYPTION_TOOL = "EncryptionTool";
    //AES加密密钥
    protected $aesKey = "9e3ac6ba9a4be613";
    //AES加密向量
    protected $aesVector = "b7251fa258d13c7c7ead51ab81354088";
    //MD5加密密钥
    protected $md5Key = "f55341fb9fe2539c";

    /**
     * （加密后数据）AES加密数据（源数据）
     */
    public function aesEncrypt($data)
    {
        $reData = null;
        if ($data) {
            $reData = openssl_encrypt($data, 'AES-128-CBC', $this->aesKey, OPENSSL_RAW_DATA, hex2bin($this->aesVector));
            $reData = bin2hex($reData);
        }
        //bin2hex用于将二进制字符串转换为十六进制字符串。这个函数在处理加密和编码时非常有用，因为它允许你以一种人类可读的形式表示二进制数据。
        return $reData;
    }

    /**
     * （解密后数据）AES解密数据（源数据）
     */
    public function aesDecrypt($data)
    {
        $reData = null;
        if ($data) {
            $reData = openssl_decrypt(hex2bin($data), 'AES-128-CBC', $this->aesKey, OPENSSL_RAW_DATA, hex2bin($this->aesVector));
        }
        return $reData;
    }

    /**
     * (MD5后数据)MD5（源数据）
     */
    public function md5Encrypt($data)
    {
        $reData = null;
        if ($data) {
            $reData = md5($data . $this->md5Key);
        }
        return $reData;
    }


}